package com.lkd.job;

import com.lkd.common.VMSystem;
import com.lkd.feign.VMService;
import com.lkd.service.UserService;
import com.xxl.job.core.biz.model.ReturnT;
import com.xxl.job.core.handler.annotation.XxlJob;
import com.xxl.job.core.log.XxlJobLogger;
import groovy.util.logging.Slf4j;
import org.joda.time.DateTimeFieldType;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.stereotype.Component;

import java.sql.Date;
import java.time.Duration;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
@Component
@Slf4j
public class UserJob {

    @Autowired
    private UserService userService;

    @Autowired
    private RedisTemplate redisTemplate;


    /**
     * 每日工单量列表初始化
     * @param param
     * @return
     * @throws Exception
     */
    @XxlJob("workCountInitJobHandler")
    public ReturnT<String> workCountInitJobHandler(String param) throws Exception{
        try {
            //查询用户列表
            XxlJobLogger.log("每日工单列表初始化");
            userService.list().forEach(user ->{ //获取用户列表并进行遍历
               if( !user.getRoleCode().equals("1001")){  //当前用户的角色不能为管理员
                   //设置存储到redis中的ZSet集合中的key值
                   String key = VMSystem.REGION_TASK_KEY_PREF   //固定字符串（区域工单统计前缀）
                           +"."+ LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd"))  //当前时间并格式化
                           +"."+user.getRegionId()  //当前用户的区域id
                           +"."+user.getRoleCode();//当前用户的角色id
                   //构建数据（zset）
                   redisTemplate.opsForZSet().add(key,user.getId(),0); //将获取到的当前用户的数据采用ZSet集合存储到redis中
                   redisTemplate.expire(key, Duration.ofDays(1));  //设置工单统计数据的过期时间为1天
               }
            });
            return ReturnT.SUCCESS;
        } catch (Exception e) {
            return ReturnT.FAIL;
        }
    }
}
